/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * dlgSeleccionarPedidos.java
 *
 * Created on Oct 27, 2011, 12:20:55 AM
 */

package visual.Despacho;

import bentity.beCliente;
import bentity.beOrdenDespacho;
import bentity.bePedido;
import blogic.blPedido;
import java.sql.Date;
import java.util.ArrayList;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.table.DefaultTableModel;
import visual.Seguridad.visualHelper;

/**
 *
 * @author renzo
 */
public class dlgSeleccionarPedidos extends javax.swing.JDialog {
    private ArrayList<bePedido> pedidosElegidos = new ArrayList<bePedido>();
    private int idOrdenDespacho = -1;
    /** Creates new form dlgSeleccionarPedidos */
    public dlgSeleccionarPedidos(JDialog parent, boolean modal, int idOrdenDespacho) {
        super((java.awt.Frame)null, modal);
        initComponents();
        this.idOrdenDespacho = idOrdenDespacho;
        visualHelper.centrarDialogoEnPantalla(this);
        this.consultarPedidosPorFiltros();
    }

    private void consultarPedidosPorFiltros(){
        try{
            blPedido bl = new blPedido();
            ArrayList<bePedido> pedidos = null;
            if (this.idOrdenDespacho != -1)
                pedidos = bl.obtenerPedidosDisponibles(idOrdenDespacho);
            else
                pedidos = bl.obtenerPedidosEnProceso();
            DefaultTableModel dtm = (DefaultTableModel)this.tblPedidos.getModel();
            this.limpiarTabla(dtm);
            if (pedidos.size() == 0)
                JOptionPane.showMessageDialog(this, "La búsqueda no arrojó resultados.", "Información", JOptionPane.INFORMATION_MESSAGE);
            else
                this.llenarTabla(pedidos);
        }
        catch (Exception e){
            e.printStackTrace();
            visualHelper.mostrarMensajeError("Ocurrió un error en la búsqueda");
        }
    }

    private void llenarTabla(ArrayList<bePedido> pedidos) {
        DefaultTableModel dtm = (DefaultTableModel)this.tblPedidos.getModel();
        Object [] datos = new Object [6];
        for(int i=0;i<pedidos.size();i++){
            datos[0] = pedidos.get(i).getIdPedido();
            datos[1] = pedidos.get(i).getCliente().getRazonSocial();
            datos[2] = pedidos.get(i).getFechaPedido().toString();
            datos[3] = pedidos.get(i).getFechaEntrega().toString();
            datos[4] = String.valueOf(pedidos.get(i).getMontoTotal());
            if (pedidos.get(i).getEstadoPedido() == bePedido.P_EN_PROCESO)
                datos[5] = "EN PROCESO";
            if (pedidos.get(i).getEstadoPedido() == bePedido.P_POR_DESPACHAR)
                datos[5] = "PARA DESPACHO";
            if (pedidos.get(i).getEstadoPedido() == bePedido.P_DESPACHADO)
                datos[5] = "DESPACHADO";
            if (pedidos.get(i).getEstadoPedido() == bePedido.P_CANCELADO)
                datos[5] = "CANCELADO";
            dtm.addRow(datos);
        }
        this.tblPedidos.setRowSelectionAllowed(true);
        this.tblPedidos.setColumnSelectionAllowed(false);
    }

    private void limpiarTabla(DefaultTableModel dtm) {
        int numFilas = dtm.getRowCount();
        for(int i=(numFilas-1);i>=0;i--)
            dtm.removeRow(i);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblTitulo = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblPedidos = new javax.swing.JTable();
        lblPedidos = new javax.swing.JLabel();
        btnSeleccionar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setAlwaysOnTop(true);
        setForeground(java.awt.Color.black);
        setMinimumSize(new java.awt.Dimension(670, 470));
        setModal(true);
        setResizable(false);
        getContentPane().setLayout(null);

        lblTitulo.setFont(new java.awt.Font("Dialog", 0, 36));
        lblTitulo.setForeground(new java.awt.Color(0, 0, 0));
        lblTitulo.setText("Seleccionar pedidos");
        getContentPane().add(lblTitulo);
        lblTitulo.setBounds(150, 0, 390, 43);

        tblPedidos.setAutoCreateRowSorter(true);
        tblPedidos.setForeground(new java.awt.Color(0, 0, 0));
        tblPedidos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Codigo", "Cliente", "Fecha solicitud", "Fecha entrega", "Monto total", "Estado"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, true, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblPedidos.setColumnSelectionAllowed(true);
        tblPedidos.setGridColor(javax.swing.UIManager.getDefaults().getColor("TableHeader.background"));
        tblPedidos.setMaximumSize(new java.awt.Dimension(800, 72));
        tblPedidos.setMinimumSize(new java.awt.Dimension(200, 72));
        tblPedidos.setSelectionForeground(new java.awt.Color(0, 0, 0));
        jScrollPane2.setViewportView(tblPedidos);
        tblPedidos.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        getContentPane().add(jScrollPane2);
        jScrollPane2.setBounds(10, 80, 630, 300);

        lblPedidos.setFont(new java.awt.Font("Dialog", 0, 14));
        lblPedidos.setForeground(new java.awt.Color(0, 0, 0));
        lblPedidos.setText("Pedidos");
        getContentPane().add(lblPedidos);
        lblPedidos.setBounds(10, 50, 70, 20);

        btnSeleccionar.setBackground(new java.awt.Color(240, 235, 226));
        btnSeleccionar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnSeleccionar.setForeground(new java.awt.Color(0, 0, 0));
        btnSeleccionar.setText("Elegir");
        btnSeleccionar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSeleccionarActionPerformed(evt);
            }
        });
        getContentPane().add(btnSeleccionar);
        btnSeleccionar.setBounds(200, 390, 120, 27);

        btnCancelar.setBackground(new java.awt.Color(240, 235, 226));
        btnCancelar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnCancelar.setForeground(new java.awt.Color(0, 0, 0));
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });
        getContentPane().add(btnCancelar);
        btnCancelar.setBounds(340, 390, 120, 27);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnSeleccionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSeleccionarActionPerformed
        // TODO add your handling code here:
        int []fila = this.tblPedidos.getSelectedRows();
        int numFilas = this.tblPedidos.getSelectedRowCount();
        if (numFilas == 0)
            JOptionPane.showMessageDialog(this, "Debe seleccionar un cliente.", "Información", JOptionPane.INFORMATION_MESSAGE);
        else{
            int filaActual = -1;
            bePedido p = null;
            beCliente c = null;
            for(int i=0;i<numFilas;i++){
                filaActual = fila[i];
                p = new bePedido();
                p.setIdPedido(Integer.parseInt(this.tblPedidos.getValueAt(filaActual, 0).toString()));
                c = new beCliente();
                c.setRazonSocial(this.tblPedidos.getValueAt(filaActual, 1).toString());
                c.setEstadoCliente(beCliente.C_ACTIVO);
                p.setCliente(c);
                p.setFechaPedido(Date.valueOf(this.tblPedidos.getValueAt(filaActual, 2).toString()));
                p.setFechaEntrega(Date.valueOf(this.tblPedidos.getValueAt(filaActual, 3).toString()));
                p.setMontoTotal(Double.parseDouble(this.tblPedidos.getValueAt(filaActual, 4).toString()));
                p.setEstadoPedido(bePedido.P_EN_PROCESO);
                this.pedidosElegidos.add(p);
            }
            this.setVisible(false);
        }
}//GEN-LAST:event_btnSeleccionarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        this.setVisible(false);
        this.dispose();
}//GEN-LAST:event_btnCancelarActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnSeleccionar;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JLabel lblPedidos;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JTable tblPedidos;
    // End of variables declaration//GEN-END:variables

    /**
     * @return the pedidos
     */
    public ArrayList<bePedido> getPedidosElegidos() {
        return pedidosElegidos;
    }

    /**
     * @param pedidos the pedidos to set
     */
    public void setPedidosElegidos(ArrayList<bePedido> pedidos) {
        this.pedidosElegidos = pedidos;
    }

}
